특성 맵
📋 문서 버전
이 문서는 3개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.
특성 맵 (Feature Map)
1. 개요
특성 맵(Feature Map)이란 합성곱 신경망(CNN, Convolutional Neural Network)에서 입력 데이터에 필터를 적용하여 특정 시각적 특징(특성)이 활성화된 위치와 강도를 나타낸 텐서(Tensor) 형태의 데이터를 의미한다.
CNN의 핵심은 이미지의 공간적 구조를 유지하면서 유의미한 패턴을 추출하는 것인데, 이때 필터(Filter)가 이미지 전체를 훑으며 연산을 수행한 결과물이 바로 특성 맵이다. 일반적으로 하나의 층에서는 여러 개의 필터를 사용하므로, 특성 맵은 단일 행렬이 아니라 각 필터가 추출한 서로 다른 특징들이 쌓인 채널의 집합 형태로 생성된다. 이를 통해 모델은 원본 픽셀 값 대신 '에지(Edge)', '질감(Texture)', '형태(Shape)'와 같은 고차원적인 정보에 집중할 수 있게 된다.
2. 생성 원리 및 작동 방식
특성 맵은 입력 데이터와 커널(Kernel, 필터) 간의 합성곱 연산(Convolution)을 통해 생성된다. 커널은 작은 크기의 가중치 행렬로, 입력 데이터 위를 일정 간격으로 이동하며 요소별 곱셈 후 합산(Element-wise multiplication and sum)을 수행한다.
2.1 채널(Channel)과 다중 필터
입력 데이터가 RGB 이미지라면 3개의 채널을 가진다. CNN에서는 여러 개의 필터를 동시에 사용하여 각 필터마다 서로 다른 특성을 추출하며, 그 결과로 생성된 여러 개의 특성 맵이 쌓여 다채널 특성 맵을 형성한다. 이때 사용된 필터의 개수가 곧 출력 특성 맵의 채널 수가 된다.
[차원 변화 예시] * 입력: $32 \times 32 \times 3$ (가로 $\times$ 세로 $\times$ RGB 채널) * 필터: $3 \times 3 \times 3$ 크기의 필터 16개 사용 * 출력: $30 \times 30 \times 16$ (가로 $\times$ 세로 $\times$ 16개의 특성 맵 채널)
2.2 주요 변수
- 스트라이드(Stride): 필터가 한 번에 이동하는 칸 수이다. 스트라이드가 커질수록 출력 특성 맵의 크기는 작아진다.
- 패딩(Padding): 입력 데이터의 외곽에 특정 값(주로 0)을 채워 넣는 기법이다. 이는 출력 크기가 급격히 줄어드는 것을 방지하고, 이미지 가장자리의 정보 손실을 줄이기 위해 사용된다.
2.3 특성 맵 크기 계산 공식
입력 데이터의 크기를 $W$, 필터의 크기를 $F$, 패딩을 $P$, 스트라이드를 $S$라고 할 때, 출력 특성 맵의 크기 $O$는 다음과 같이 계산된다. 실제 프레임워크에서는 소수점 발생 시 내림 연산을 수행한다.
$$O = \lfloor \frac{W - F + 2P}{S} \rfloor + 1$$
[표 1] 설정값에 따른 출력 크기 변화 예시
| 입력 크기 ($W$) | 필터 크기 ($F$) | 패딩 ($P$) | 스트라이드 ($S$) | 계산 과정 | 출력 크기 ($O$) |
|---|---|---|---|---|---|
| 32 $\times$ 32 | 3 $\times$ 3 | 0 | 1 | $\lfloor(32-3+0)/1\rfloor + 1$ | 30 $\times$ 30 |
| 32 $\times$ 32 | 3 $\times$ 3 | 1 | 1 | $\lfloor(32-3+2)/1\rfloor + 1$ | 32 $\times$ 32 |
| 32 $\times$ 32 | 3 $\times$ 3 | 1 | 2 | $\lfloor(32-3+2)/2\rfloor + 1$ | 16 $\times$ 16 |
3. 수용장 (Receptive Field)
수용장(Receptive Field)이란 출력 특성 맵의 한 픽셀이 입력 이미지의 어느 정도 영역을 참조하고 있는지를 나타내는 개념이다.
- 국소적 수용장: 초기 층의 특성 맵 픽셀은 입력 이미지의 아주 작은 영역(예: $3 \times 3$)만을 반영한다.
- 수용장의 확장: 층이 깊어질수록(Layer가 쌓일수록), 이전 층의 특성 맵을 다시 합성곱 연산하므로, 최종 층의 한 픽셀은 입력 이미지의 매우 넓은 영역을 포괄하게 된다. 이는 모델이 이미지의 국소적인 특징뿐만 아니라 전체적인 구조와 맥락을 파악할 수 있게 하는 핵심 원리이다.
4. 계층별 특성 추출의 특성
CNN은 층이 깊어짐에 따라 추출하는 특성의 추상화 수준이 단계적으로 높아지는 계층적 구조를 가진다.
4.1 얕은 층 (Low-level Features)
네트워크의 앞부분에 위치한 층에서는 매우 단순한 기하학적 특성을 추출한다. * 추출 대상: 수직/수평 선, 대각선, 단순한 색상 대비, 점 등. * 특징: 입력 이미지의 세부적인 픽셀 변화에 민감하게 반응한다.
4.2 깊은 층 (High-level Features)
네트워크의 뒷부분으로 갈수록 앞서 추출된 단순 특성들이 조합되어 복잡한 개념을 형성한다. * 추출 대상: 원형, 격자무늬 $\rightarrow$ 눈, 코, 입 $\rightarrow$ 얼굴 전체, 자동차 바퀴 $\rightarrow$ 자동차 전체. * 특징: 구체적인 픽셀 값보다는 객체의 의미론적(Semantic) 형태와 구조에 집중한다.
[계층적 특성 추출 흐름도]
graph LR
A[입력 이미지] --> B[Layer 1: 에지/선]
B --> C[Layer 2: 단순 도형/질감]
C --> D[Layer 3: 객체 부분/부품]
D --> E[Layer 4: 완전한 객체/의미]
style A fill:#f9f,stroke:#333
style E fill:#bbf,stroke:#333
5. 특성 맵의 활용 및 확장
5.1 시각화와 해석
특성 맵은 일반적으로 활성화 함수(Activation Function), 특히 ReLU(Rectified Linear Unit)를 거친다. ReLU는 0보다 작은 값을 0으로 처리하여, 특정 특성이 '존재하는지(활성화)' 아니면 '존재하지 않는지(비활성화)'를 명확히 구분한다.
이를 이미지 형태로 시각화하면 모델의 판단 근거를 분석할 수 있다. 예를 들어, 강아지 사진을 입력했을 때 특정 필터의 특성 맵에서 강아지의 귀나 꼬리 부분이 밝게 빛난다면, 해당 필터가 그 부위의 특성을 성공적으로 학습했음을 의미한다. 이는 모델의 블랙박스 특성을 완화하는 설명 가능한 AI(XAI)의 기초적인 분석 방법이 된다.
5.2 풀링(Pooling)
특성 맵의 공간적 크기를 줄이기 위해 풀링 층(Pooling Layer)을 사용한다. 대표적으로 Max Pooling은 특정 영역에서 최대값만을 선택하여 다운샘플링(Downsampling)을 수행한다. 이를 통해 다음과 같은 효과를 얻을 수 있다. * 계산 효율성: 특성 맵의 해상도를 낮추어 연산량과 메모리 사용량을 줄인다. * 불변성(Invariance) 확보: 특성이 이미지 내에서 약간 이동하더라도 최대값은 유지되므로, 위치 변화에 강건한 특징 추출이 가능하다. * 과적합 방지: 세부적인 픽셀 정보보다는 핵심적인 특성만을 남겨 일반화 성능을 높인다.
5.3 코드 예제 (PyTorch)
다음은 PyTorch를 사용하여 특정 합성곱 층의 특성 맵을 추출하는 간단한 예시 코드이다.
import torch
import torch.nn as nn
# 간단한 CNN 모델 정의
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
self.relu = nn.ReLU()
def forward(self, x):
# 특성 맵을 반환하기 위해 중간 단계 저장
x = self.conv1(x)
x = self.relu(x)
return x
# 입력 데이터 생성 (Batch=1, Channel=3, H=32, W=32)
input_tensor = torch.randn(1, 3, 32, 32)
model = SimpleCNN()
# 특성 맵 추출
with torch.no_grad():
feature_maps = model(input_tensor)
print(f"특성 맵의 형태: {feature_maps.shape}")
# 출력: torch.Size([1, 16, 32, 32]) -> 16개의 채널(특성 맵) 생성
텐서 연산의 입체적 구조
특성 맵 생성 과정에서 입력 채널과 필터의 깊이는 반드시 일치해야 한다. 입력 데이터의 채널 수가 $C_{in}$일 때, 하나의 필터는 반드시 $C_{in}$개의 커널 층을 가져야 하며, 각 커널 층은 입력의 각 채널과 1:1로 대응하여 연산을 수행한다.
이때 각 채널에서 계산된 값들이 모두 합산되어 하나의 단일 채널 특성 맵을 형성한다. 즉, 필터 1개는 입력의 모든 채널 정보를 통합하여 하나의 특징(예: 특정 방향의 에지)을 추출하는 입체적 연산 장치이며, 최종 출력 특성 맵의 채널 수는 사용된 필터의 개수($C_{out}$)에 의해 결정된다.
고도화된 시각화: Grad-CAM
단순한 활성화 맵 시각화는 어떤 층의 특성 맵이 최종 분류 결정에 결정적인 영향을 미쳤는지 알기 어렵다. 이를 해결하기 위해 Grad-CAM(Gradient-weighted Class Activation Mapping)은 특정 클래스에 대한 출력 값의 기울기(Gradient)를 가중치로 활용한다.
[작동 원리 및 수식] 특정 클래스 $c$에 대한 점수 $y^c$를 특성 맵 $A^k$로 미분하여 각 채널의 중요도(가중치) $\alpha_k^c$를 계산한다.
$$\alpha_k^c = \frac{1}{Z} \sum_i \sum_j \frac{\partial y^c}{\partial A_{ij}^k}$$ (여기서 $Z$는 특성 맵의 전체 픽셀 수이며, $\sum_i \sum_j$는 글로벌 평균 풀링을 의미함)
최종적으로 계산된 가중치를 각 특성 맵에 곱하고 ReLU를 적용하여 히트맵을 생성한다. $$L_{Grad-CAM}^c = \text{ReLU} \left( \sum_k \alpha_k^c A^k \right)$$
이 방식은 모델이 이미지의 어느 영역을 보고 "강아지"라고 판단했는지 픽셀 단위의 기여도를 시각화함으로써 모델의 해석 가능성을 높인다.
특성 맵의 변형 및 최신 기법
효율적인 네트워크 설계를 위해 특성 맵의 차원을 조절하거나 연산량을 줄이는 기법들이 사용된다.
1x1 합성곱 (Pointwise Convolution)
$1 \times 1$ 크기의 필터를 사용하는 합성곱은 공간적 특징을 추출하기보다 채널 간의 선형 조합을 통해 차원을 변경하는 데 목적이 있다.
[차원 변화 예시 도식] * 차원 축소 (Compression): $\text{Input}(H \times W \times 512) \xrightarrow{1 \times 1 \text{ Conv (64 filters)}} \text{Output}(H \times W \times 64)$ * 효과: 연산량 감소, 정보 압축 * 차원 확장 (Expansion): $\text{Input}(H \times W \times 64) \xrightarrow{1 \times 1 \text{ Conv (256 filters)}} \text{Output}(H \times W \times 256)$ * 효과: 고차원 특징 공간으로 투영하여 표현력 증대
Depthwise Separable Convolution
특성 맵 처리 과정을 Depthwise(채널별 공간 연산)와 Pointwise(채널 간 통합 연산)로 분리하여 연산 효율을 극대화하는 방식이다. 이는 MobileNet과 같은 경량 모델의 핵심 구조로, 기존 합성곱 대비 파라미터 수와 연산량을 획기적으로 줄이면서 유사한 특성 맵 추출 성능을 유지한다.
특성 맵의 전이 학습 및 응용
사전 학습된 모델(Pre-trained Model)의 특성 맵은 범용적인 시각적 특징을 이미 학습한 상태이므로, 이를 새로운 작업에 재사용할 수 있다.
전이 학습(Transfer Learning)에서의 층별 특성
전이 학습 시, 모델의 앞부분(얕은 층)은 고정(Freeze)하고 뒷부분(깊은 층)만 재학습시키는 경우가 많다. 이는 층별로 추출하는 특성의 성격이 다르기 때문이다.
[표 2] 층별 특성 변화 및 전이 학습 전략 비교
| 구분 | 얕은 층 (Early Layers) | 깊은 층 (Deep Layers) |
|---|---|---|
| 추출 특성 | 일반적 특징 (선, 색상, 점) | 구체적 특징 (객체 부위, 특정 형태) |
| 범용성 | 매우 높음 (대부분의 이미지에 공통적) | 낮음 (특정 데이터셋에 종속적) |
| 학습 전략 | 가중치 고정 (Freeze) | 미세 조정 (Fine-tuning) |
| 역할 | 범용 특징 추출기 (Feature Extractor) | 클래스 분류기 (Classifier) |
응용 사례
- 스타일 전이 (Style Transfer): 콘텐츠 이미지의 '형태 특성 맵'과 스타일 이미지의 '질감 특성 맵'을 분리하여 결합함으로써, 특정 화풍으로 이미지를 재구성한다.
- 시맨틱 세그멘테이션 (Semantic Segmentation): 깊은 층의 추상적인 특성 맵과 얕은 층의 정교한 공간 특성 맵을 다시 결합(Upsampling/Skip-connection)하여 픽셀 단위의 정밀한 영역 분할을 수행한다.
스트리밍 오류
LLM 서비스에서 응답을 받을 수 없습니다.
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.